package lv.clientedisqueria.model.musico;

import java.util.List;

import lv.clientedisqueria.client.ClienteServer;
import lv.clientedisqueria.model.DisqueriaTablaModelo;
import lv.clientedisqueria.model.Modelo;
import lv.mensajeriadisqueria.dto.MusicoDto;
import lv.mensajeriadisqueria.idomain.IMusico;
import lv.mensajeriadisqueria.mensaje.Mensaje;

public class MusicoModel extends Modelo<IMusico>{
	
	private final static String PROPERTY_CHANGE_CAMBIAR_MUSICO = "cambiarMusico";
	private final MusicoTablaModel musicoTablaModel;
	
	public MusicoModel(){
		this.musicoTablaModel=new MusicoTablaModel(this);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<IMusico> buscarTodos() {
		ClienteServer.getInstance().mandarMensaje(Mensaje.TODOS, new MusicoDto());
		return (List<IMusico>) ClienteServer.getInstance().getObjeto();
	}

	@Override
	public String getPropertyChangeCambio() {
		return PROPERTY_CHANGE_CAMBIAR_MUSICO;
	}

	public void insertar() {
		musicoTablaModel.adherirOModificar(new MusicoDto());
		notificar(Modelo.INSERTAR);	}
	
	public void modificar() {
		notificar(Modelo.MODIFICAR);		
	}
	public void borrar() {
		ClienteServer.getInstance().mandarMensaje(Mensaje.BAJA, musicoTablaModel.getSeleccionado());
		musicoTablaModel.remover();
		notificar(Modelo.BORRAR);		
	}
	public void guardar(IMusico musico) {
		if (musico.getIdMusico() != null) {
			ClienteServer.getInstance().mandarMensaje(Mensaje.MODIFICAR, musico);
		} else {
			ClienteServer.getInstance().mandarMensaje(Mensaje.ALTA, musico);
		}
		IMusico musicoDto = (IMusico)ClienteServer.getInstance().getObjeto();
		musico.setIdMusico(musicoDto.getIdMusico());
		musicoTablaModel.adherirOModificar(musico);
		notificar(Modelo.GUARDADO);		
	}

	public MusicoTablaModel getMusicoTablaModel() {
		return musicoTablaModel;
	}

	@Override
	public DisqueriaTablaModelo<IMusico> getTablaModel() {
		return musicoTablaModel;
	}
}
